package com.ruoyi.ruoyinetty.entity;

import lombok.Data;
import lombok.ToString;

import java.nio.channels.Channel;

@Data
@ToString
public class PackageData {

    /**
     * 16byte 消息头
     */
    protected MsgHeader msgHeader;

    // 消息体字节数组
    protected byte[] msgBodyBytes;

    /**
     * 校验码 1byte
     */
    protected int checkSum;

    //记录每个客户端的channel,以便下发信息给客户端
    protected Channel channel;

    public MsgHeader getMsgHeader() {
        return msgHeader;
    }

    //TODO set 和 get 方法在此处省略

    //消息头
    @Data
    @ToString
    public static class MsgHeader {
        // 消息ID
        protected int msgId;

        /// ========消息体属性
        // byte[2-3]
        protected int msgBodyPropsField;
        // 消息体长度
        protected int msgBodyLength;
        // 数据加密方式
        protected int encryptionType;
        // 是否分包,true==>有消息包封装项
        protected boolean hasSubPackage;
        // 保留位[14-15]
        protected String reservedBit;
        /// ========消息体属性

        protected int version;
        // 终端手机号
        protected String terminalPhone;
        // 流水号
        protected int flowId;

        // =====消息包封装项
        // byte[12-15]
        protected int packageInfoField;
        // 消息包总数(word(16))
        protected long totalSubPackage;
        // 包序号(word(16))这次发送的这个消息包是分包中的第几个消息包, 从 1 开始
        protected long subPackageSeq;
         //=====消息包封装项

        //TODO set 和 get 方法在此处省略
    }

}